package cn.stylefeng.guns.modular.production.productionOrder.pojo.request;

import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;

/**
 * 生产订单表封装类
 *
 * @author panl
 * @since 2023/12/15 11:29
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class OrderRequest extends BaseRequest {

    /**
     * 数据机构
     */
    @NotNull(message = "数据机构不能为空", groups = {add.class, edit.class})
    @ChineseDescription("数据机构")
    private BigDecimal orgDataCode;

    /**
     * 订单ID(erp.modid)
     */
    @NotNull(message = "订单ID不能为空", groups = {edit.class, delete.class})
    @ChineseDescription("订单ID")
    private String orderId;

    /**
     * 件号
     */
    @NotBlank(message = "件号不能为空", groups = {add.class, edit.class})
    @ChineseDescription("件号")
    private String itemCode;

    /**
     * 批次号
     */
    @NotBlank(message = "批次号不能为空", groups = {add.class, edit.class})
    @ChineseDescription("批次号")
    private String batchCode;

    /**
     * 工艺路径
     */
    @NotBlank(message = "工艺路径不能为空", groups = {add.class, edit.class})
    @ChineseDescription("工艺路径")
    private String routeCode;

    /**
     * 优先级
     */
    @NotNull(message = "优先级不能为空", groups = {add.class, edit.class})
    @ChineseDescription("优先级")
    @JsonProperty("priority")
    private BigDecimal priority;

    /**
     * 状态（1：未确认，2：已确认，3：生产中，4：暂停（暂时不用），5：已完成  ，6：手动关单，7：已发货，8：使用中，9:使用完成）
     */
    @ChineseDescription("状态")
    private BigDecimal status;

    /**
     * 计划数量
     */
    @ChineseDescription("计划数量")
    private BigDecimal planCount;

    /**
     * 完成数量
     */
    @ChineseDescription("完成数量")
    private BigDecimal compCount;

    /**
     * 合格品数量
     */
    @ChineseDescription("合格品数量")
    private BigDecimal goodCount;

    /**
     * 不合格品数量
     */
    @ChineseDescription("不合格品数量")
    private BigDecimal ngCount;

    /**
     * 合格率
     */
    @ChineseDescription("合格率")
    private BigDecimal QRATE;

    /**
     * 实际开始时间
     */
    @ChineseDescription("实际开始时间")
	private String startTime;

    /**
     * 实际完成时间
     */
    @ChineseDescription("实际完成时间")
	private String endTime;

    /**
     * 计划开始时间(ERP)
     */
    @ChineseDescription("计划开始时间(ERP)")
	private String planStartTime;

    /**
     * 计划结束时间(ERP)
     */
    @ChineseDescription("计划结束时间(ERP)")
	private String planEndTime;

    /**
     * 来源（1：ERP  2：人工）
     */
    @NotNull(message = "来源（1：ERP  2：人工）不能为空", groups = {add.class, edit.class})
    @ChineseDescription("来源（1：ERP  2：人工）")
    private BigDecimal SOURCE;

    /**
     * 齐套（0,0,0  原材料、刀具、工装夹具）
     */
    @ChineseDescription("齐套（0,0,0  原材料、刀具、工装夹具）")
    private String KITTING;

    /**
     * 添加时间
     */
    @ChineseDescription("添加时间")
	private String createTime;

    /**
     * 添加人
     */
    @ChineseDescription("添加人")
    private String createUser;

    /**
     * 更新时间
     */
    @ChineseDescription("更新时间")
	private String updateTime;

    /**
     * 更新人
     */
    @ChineseDescription("更新人")
    private String updateUser;

    /**
     * 加工零件状态(样件、首件、量产)
     */
    @ChineseDescription("加工零件状态(样件、首件、量产)")
    private String itemStatus;


    /**
     * 批量删除用的id集合
     */
    @NotNull(message = "批量删除id集合不能为空", groups = batchDelete.class)
    @ChineseDescription("批量删除用的id集合")
    private List<String> batchDeleteIdList;

}
